/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Funcionalidad;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Galerias {

    private static final String controlador = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost/flog";
    private static final String usuario = "root";
    private static final String clave = "";


    static {
        try {
            Class.forName(controlador);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Error creating driver" + " class. Cause: " + e);
        }
    }

    public static Galeria ResultSetToGaleria(ResultSet resultado) throws SQLException {
        return new Galeria(resultado.getInt("id_galeria"), resultado.getString("nombre"), resultado.getString("fecha"));
    }
// consulta la lista de galerias disponibles.
    public static List<Galeria> consultaGalerias() throws Exception {

        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        List<Galeria> lista = new ArrayList<Galeria>();
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM galeria ORDER BY `fecha` desc");
        while (resultados.next()) {
            Galeria galeria = Galerias.ResultSetToGaleria(resultados);
            lista.add(galeria);
        }
        resultados.close();
        solicitud.close();
        conexion.close();
        return lista;
    }
//consulta la primera foto para añadirla como fondo a la galeria.
    public static String consultaPrimeraFoto(int id_galeria) throws Exception {

        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        String ruta = null;
        List<Fotografia> lista = new ArrayList<Fotografia>();
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM fotografia where id_galeria=" + id_galeria);
        while (resultados.next()) {
            Fotografia foto = Fotografias.ResultSetToFotografia(resultados);
            lista.add(foto);
        }
        resultados.close();
        solicitud.close();
        conexion.close();

        Iterator it = lista.iterator();
        while (it.hasNext()) {
            Fotografia fotografia = (Fotografia) it.next();
            ruta = fotografia.getRuta();
        }
        return ruta;
    }
//devuelve la galeria que se le pasa por parametro
    public static Galeria getGaleria(int idgaleria) throws Exception {
        List<Galeria> lista = new ArrayList<Galeria>();
        Galeria galeria = null;
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM `galeria` WHERE id_galeria=" + idgaleria);
        while (resultados.next()) {
            galeria = Galerias.ResultSetToGaleria(resultados);
            lista.add(galeria);
        }

        resultados.close();
        solicitud.close();
        conexion.close();
        return galeria;
    }
//bora la galeria que se le pasa por parametro
    public static void borraGaleria(int id_galeria) throws Exception {
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Fotografia foto = null;
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM `fotografia` WHERE id_galeria=" + id_galeria);
        while (resultados.next()) {
            foto = Fotografias.ResultSetToFotografia(resultados);
            Fotografias.borraFoto(foto.getId_foto());
        }
        solicitud.executeUpdate("DELETE FROM galeria where id_galeria=" + id_galeria);
        solicitud.close();
        conexion.close();
    }

    public static void nuevaGaleria(String nombre) throws Exception {
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        try {
            solicitud.executeUpdate("INSERT INTO galeria (nombre,fecha) values(" + nombre + ",'" + Habituales.fechaActual() + "')");
        } catch (Exception e) {
        }

        solicitud.close();
        conexion.close();
    }
//devuelve la id de laultima galeria .
    public static int ultimaGaleria() throws Exception {
        Galeria galeria = null;
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("Select * from galeria order by id_galeria asc");
        while (resultados.next()) {
            galeria = Galerias.ResultSetToGaleria(resultados);
        }

        resultados.close();
        solicitud.close();
        conexion.close();
        return galeria.getId();


    }
}
